<?php
namespace SisGG\FinalBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraint as Assert;

/**
 * @ORM\Entity
 */
class CategoriaProductoProduccion implements \Serializable
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;
    /**
     * @ORM\Column(type="string",unique=true)
     */
    protected $nombre;
    /**
     * @ORM\OneToMany(targetEntity="CategoriaProductoProduccion", mappedBy="padre")
     */
    private $hijo;

    /**
     * @ORM\ManyToOne(targetEntity="CategoriaProductoProduccion", inversedBy="hijo")
     */
    private $padre;
    
    /**
     * @ORM\OneToMany(targetEntity="ProductoProduccion", mappedBy="categoria")
     */
    private $productoProduccion;
    
    /**
     * @return string
     */
    public function serialize()
    {
      return serialize($this->id);
    }

    /**
     * @param string $data
     */
    public function unserialize($data)
    {
      $this->id = unserialize($data);
    }

    /**
     * Constructor
     */
    public function __construct()
    {
        $this->hijo = new \Doctrine\Common\Collections\ArrayCollection();
    }
    

    /**
     * Get id
     *
     * @return integer 
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set nombre
     *
     * @param string $nombre
     * @return CategoriaProductoProduccion
     */
    public function setNombre($nombre)
    {
        $this->nombre = $nombre;
    
        return $this;
    }

    /**
     * Get nombre
     *
     * @return string 
     */
    public function getNombre()
    {
        return $this->nombre;
    }

    /**
     * Add hijo
     *
     * @param SisGG\FinalBundle\Entity\CategoriaProductoProduccion $hijo
     * @return CategoriaProductoProduccion
     */
    public function addHijo(\SisGG\FinalBundle\Entity\CategoriaProductoProduccion $hijo)
    {
        $this->hijo[] = $hijo;
    
        return $this;
    }

    /**
     * Remove hijo
     *
     * @param SisGG\FinalBundle\Entity\CategoriaProductoProduccion $hijo
     */
    public function removeHijo(\SisGG\FinalBundle\Entity\CategoriaProductoProduccion $hijo)
    {
        $this->hijo->removeElement($hijo);
    }

    /**
     * Get hijo
     *
     * @return Doctrine\Common\Collections\Collection 
     */
    public function getHijo()
    {
        return $this->hijo;
    }

    /**
     * Set padre
     *
     * @param SisGG\FinalBundle\Entity\CategoriaProductoProduccion $padre
     * @return CategoriaProductoProduccion
     */
    public function setPadre(\SisGG\FinalBundle\Entity\CategoriaProductoProduccion $padre = null)
    {
        $this->padre = $padre;
    
        return $this;
    }

    /**
     * Get padre
     *
     * @return SisGG\FinalBundle\Entity\CategoriaProductoProduccion 
     */
    public function getPadre()
    {
        return $this->padre;
    }

    /**
     * Add productoProduccion
     *
     * @param SisGG\FinalBundle\Entity\ProductoProduccion $productoProduccion
     * @return CategoriaProductoProduccion
     */
    public function addProductoProduccion(\SisGG\FinalBundle\Entity\ProductoProduccion $productoProduccion)
    {
        $this->productoProduccion[] = $productoProduccion;
    
        return $this;
    }

    /**
     * Remove productoProduccion
     *
     * @param SisGG\FinalBundle\Entity\ProductoProduccion $productoProduccion
     */
    public function removeProductoProduccion(\SisGG\FinalBundle\Entity\ProductoProduccion $productoProduccion)
    {
        $this->productoProduccion->removeElement($productoProduccion);
    }

    /**
     * Get productoProduccion
     *
     * @return Doctrine\Common\Collections\Collection 
     */
    public function getProductoProduccion()
    {
        return $this->productoProduccion;
    }
}